package com.eventos;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.eventssmartphone.JSONReaderListener;

import android.content.Context;

import com.eventssmartphone.JSONReader;

public class GestorZonas {
	private static final GestorZonas gestor = new GestorZonas();
	
	public static GestorZonas getInstance(){
		return gestor;
	}
	
	public String dameUrlMapa (int idEvento){
		
		InputStream is;
		String mapa = "";
		JSONObject jMapa;	
		
		try {
			is = new URL("http://200.16.7.112:3000/event_management/events/dameMapaEvento/" + String.valueOf(idEvento) + ".json").openStream();
		} catch (MalformedURLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
			return null;
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
			return null;
		}
		
		try {
			BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
			StringBuilder sb = new StringBuilder();
			int cp;
			try {
				while ((cp = rd.read()) != -1) {
				      sb.append((char) cp);
				    }
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			String jsonText = sb.toString();
			jMapa = new JSONObject(jsonText);
//		}catch (InterruptedException e1) {
//			e1.printStackTrace();
//			return null;
//		} catch (ExecutionException e1) {
//			e1.printStackTrace();
//			return null;
		} catch(JSONException e1){
			e1.printStackTrace();
			return null;
		}
		
		try{
			if (jMapa != null){
				mapa = "http://200.16.7.112:3000" + jMapa.getString("mapa_zona");
			}
		}catch(JSONException e1){
			e1.printStackTrace();
			return null;
		}catch (Exception e1) {
			e1.printStackTrace();
			return null;
		}
		return mapa;
	}
	
//	public List<ZonasBean> dameZonasEvento(int idEvento){
	public void dameZonasEvento(int idEvento, Context context){
//		List<ZonasBean> lista = new ArrayList<ZonasBean>();
		JSONReader reader = new JSONReader();
		reader.setJSONReaderListener((JSONReaderListener)context);
		reader.execute("http://200.16.7.112:3000/event_management/events/dameZonasEvento/"+ String.valueOf(idEvento) +".json");
//		try{
//			jZonas=(new JSONReader().execute("http://200.16.7.112:3000/event_management/events/dameZonasEvento/"+ String.valueOf(idEvento) +".json")).get();
//		}catch (InterruptedException e1) {
//			e1.printStackTrace();
//			return null;
//		} catch (ExecutionException e1) {
//			e1.printStackTrace();
//			return null;
//		}
//		
//		try{
//			if(jZonas != null){
//				for(int i = 0; i< jZonas.length(); i++){
//					ZonasBean zona = new ZonasBean();
//					
//					zona.setIdZona(jZonas.getJSONObject(i).getInt("id"));
//					zona.setNombre(jZonas.getJSONObject(i).getString("nombre"));
//					zona.setPrecio(jZonas.getJSONObject(i).getDouble("fare"));
//					lista.add(zona);
//				}
//			}
//		}catch(JSONException e1){
//			e1.printStackTrace();
//			return null;
//		}catch (Exception e1) {
//			e1.printStackTrace();
//			return null;
//		}
		
//		zona = new ZonasBean();
//		zona.setIdZona(2);
//		zona.setNombre("Zona M");
//		zona.setPrecio(600.00);
//		lista.add(zona);
//		
//		zona = new ZonasBean();
//		zona.setIdZona(3);
//		zona.setNombre("Zona I");
//		zona.setPrecio(520.00);
//		lista.add(zona);
//		
//		zona = new ZonasBean();
//		zona.setIdZona(4);
//		zona.setNombre("Zona A2");
//		zona.setPrecio(360.00);
//		lista.add(zona);
//		
//		zona = new ZonasBean();
//		zona.setIdZona(5);
//		zona.setNombre("Zona LL");
//		zona.setPrecio(280.00);
//		lista.add(zona);
//		
//		zona = new ZonasBean();
//		zona.setIdZona(6);
//		zona.setNombre("Zona E");
//		zona.setPrecio(200.00);
//		lista.add(zona);
//		
//		zona = new ZonasBean();
//		zona.setIdZona(7);
//		zona.setNombre("Zona T");
//		zona.setPrecio(72.00);
//		lista.add(zona);
//		
//		zona = new ZonasBean();
//		zona.setIdZona(8);
//		zona.setNombre("Zona A");
//		zona.setPrecio(54.00);
//		lista.add(zona);
		
//		return lista;
	}
	
	public List<ZonasBean> procesarDameZonasEvento(JSONArray jZonas,int idEvento){
		List<ZonasBean> lista = new ArrayList<ZonasBean>();
		try{
			if(jZonas != null){
				for(int i = 0; i< jZonas.length(); i++){
					ZonasBean zona = new ZonasBean();
					
					zona.setIdZona(jZonas.getJSONObject(i).getInt("id"));
					zona.setNombre(jZonas.getJSONObject(i).getString("nombre"));
					zona.setPrecio(jZonas.getJSONObject(i).getDouble("fare"));
					lista.add(zona);
				}
			}
		}catch(JSONException e1){
			e1.printStackTrace();
			return null;
		}catch (Exception e1) {
			e1.printStackTrace();
			return null;
		}
		return lista;
	}
}
